home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / elevator2 / code.lua next >
Text File  |  2005-07-16  |  9KB  |  221 lines

  1.  
  2. -- -----------------------------------------------------------------
  3. -- Init
  4. -- -----------------------------------------------------------------
  5. local function prog_init()
  6.     initModels()
  7.     sound_playMusic("music/rybky01.ogg")
  8.     local pokus = getRestartCount()
  9.  
  10.  
  11.     -- -------------------------------------------------------------
  12.     local function prog_init_room()
  13.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  14.  
  15.         room.uvod = 0
  16.         room.odedkovi = 0
  17.         room.ritual = 0
  18.         room.ohlavem = 0
  19.         room.ohlavev = 0
  20.         room.blizko = 0
  21.         room.jikry = 0
  22.         room.curat = 0
  23.  
  24.         return function()
  25.             if isReady(small) and isReady(big) and no_dialog() then
  26.                 if room.blizko > 0 then
  27.                     room.blizko = room.blizko - 1
  28.                 end
  29.                 if room.uvod == 0 then
  30.                     room.uvod = 1
  31.                     addm(randint(5, 20), "zd2-m-dalsi")
  32.                     switch(random(2)){
  33.                         [0] = function()
  34.                             addv(random(5), "zd2-v-odlis0")
  35.                         end,
  36.                         [1] = function()
  37.                             addv(random(5), "zd2-v-odlis1")
  38.                         end,
  39.                     }
  40.                 elseif room.odedkovi == 0 and small.X > 20 and small.Y < 30 and look_at(big, dedek) then
  41.                     room.odedkovi = 1
  42.                     addv(randint(5, 10), "zd2-v-vlevo")
  43.                     switch(random(2)){
  44.                         [0] = function()
  45.                             addm(randint(1, 5), "zd2-m-nevid0")
  46.                         end,
  47.                         [1] = function()
  48.                             addm(randint(1, 5), "zd2-m-nevid1")
  49.                         end,
  50.                     }
  51.                 elseif room.ritual == 0 and random(100) < 5 and room.odedkovi == 1 and dedek.pohlse == 0 then
  52.                     addv(1, "zd2-v-symbol")
  53.                     addm(randint(1, 5), "zd2-m-douf")
  54.                     room.ritual = 1
  55.                 elseif room.ohlavem == 0 and dist(small, hlava) < 3 and look_at(small, hlava) and random(100) < 5 then
  56.                     room.ohlavem = 1
  57.                     addm(1, "zd2-m-lebka")
  58.                 elseif room.ohlavev == 0 and dist(big, hlava) < 3 and look_at(big, hlava) and random(100) < 5 then
  59.                     room.ohlavev = 1
  60.                     addv(1, "zd2-v-haml")
  61.                 elseif room.blizko == 0 and (dist(small, dedek) < 5 and look_at(small, dedek) or dist(small, dedek) < 5 and look_at(small, dedek)) then
  62.                     room.blizko = random(400) + 100
  63.                     switch(random(3)){
  64.                         [0] = function()
  65.                             planDialogSet(random(3), "zd2-x-hus0", 101, dedek, "mluvi")
  66.                         end,
  67.                         [1] = function()
  68.                             planDialogSet(random(3), "zd2-x-hus1", 102, dedek, "mluvi")
  69.                         end,
  70.                         [2] = function()
  71.                             planDialogSet(random(3), "zd2-x-kricet", 102, dedek, "mluvi")
  72.                         end,
  73.                     }
  74.                 elseif dedek.dir ~= dir_no and random(100) < 2 then
  75.                     switch(random(3)){
  76.                         [0] = function()
  77.                             planDialogSet(randint(2, 6), "zd2-x-krik0", 101, dedek, "mluvi")
  78.                         end,
  79.                         [1] = function()
  80.                             planDialogSet(randint(2, 6), "zd2-x-krik1", 102, dedek, "mluvi")
  81.                         end,
  82.                         [2] = function()
  83.                             if room.ritual == 1 then
  84.                                 planDialogSet(randint(2, 6), "zd2-x-ritual", 102, dedek, "mluvi")
  85.                             end
  86.                         end,
  87.                     }
  88.                 elseif dist(small, dedek) < 3 and dist(big, dedek) < 3 and random(100) < 1 then
  89.                     planDialogSet(randint(2, 6), "zd2-x-nechteme", 102, dedek, "mluvi")
  90.                 elseif (dist(small, dedek) <= 1 or dist(big, dedek) <= 1) and random(100) < 2 then
  91.                     switch(random(3)){
  92.                         [0] = function()
  93.                             planDialogSet(randint(2, 6), "zd2-x-nechme", 102, dedek, "mluvi")
  94.                         end,
  95.                         [1] = function()
  96.                             planDialogSet(randint(2, 6), "zd2-x-pokoj", 102, dedek, "mluvi")
  97.                         end,
  98.                         [2] = function()
  99.                             planDialogSet(randint(2, 6), "zd2-x-fuj", 102, dedek, "mluvi")
  100.                         end,
  101.                     }
  102.                 elseif dist(small, dedek) < 3 and look_at(small, dedek) and room.jikry == 0 and random(100) < 1 then
  103.                     room.jikry = 1
  104.                     planDialogSet(random(3), "zd2-x-neklast", 102, dedek, "mluvi")
  105.                 elseif dist(big, dedek) < 3 and look_at(big, dedek) and room.curat == 0 and random(100) < 1 then
  106.                     room.curat = 1
  107.                     planDialogSet(random(3), "zd2-x-necurat", 102, dedek, "mluvi")
  108.                 end
  109.             end
  110.         end
  111.     end
  112.  
  113.     -- -------------------------------------------------------------
  114.     local function prog_init_vytah()
  115.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  116.  
  117.         --NOTE: double rope
  118.         game_addDecor("rope", vytah.index, stroj.index, 43, 0, 58, 27)
  119.         game_addDecor("rope", vytah.index, stroj.index, 43 + 3, 0, 58 + 3, 27)
  120.     end
  121.  
  122.     -- -------------------------------------------------------------
  123.     local function prog_init_stroj()
  124.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  125.  
  126.         return function()
  127.             if stroj.X == vytah.X - 1 then
  128.                 if stroj.dir == dir_no and vytah.dir == dir_down then
  129.                     pom1 = 2
  130.                 elseif stroj.dir == dir_up and vytah.dir == dir_no then
  131.                     pom1 = 1
  132.                 elseif stroj.dir == dir_no and vytah.dir == dir_up then
  133.                     pom1 = -1
  134.                 elseif stroj.dir == dir_down and vytah.dir == dir_no then
  135.                     pom1 = -2
  136.                 else
  137.                     pom1 = 0
  138.                 end
  139.                 stroj.afaze = stroj.afaze + pom1
  140.                 if stroj.afaze > 5 then
  141.                     stroj.afaze = stroj.afaze - 6
  142.                 elseif stroj.afaze < 0 then
  143.                     stroj.afaze = stroj.afaze + 6
  144.                 end
  145.             end
  146.             stroj:updateAnim()
  147.         end
  148.     end
  149.  
  150.     -- -------------------------------------------------------------
  151.     local function prog_init_dedek()
  152.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  153.  
  154.         dedek.mluvi = 0
  155.         dedek.pohlse = 0
  156.         dedek.mavani = randint(1, 3)
  157.  
  158.         return function()
  159.             if dedek.dir ~= dir_no then
  160.                 dedek.pohlse = 1
  161.             end
  162.             if dedek.mavani == 0 then
  163.                 if dedek.mluvi == 102 then
  164.                     dedek.afaze = 1
  165.                 else
  166.                     dedek.afaze = 0
  167.                 end
  168.                 dedek.mavani = randint(1, 3)
  169.             else
  170.                 switch(dedek.mluvi){
  171.                     [101] = function()
  172.                         dedek.afaze = 1
  173.                         dedek.mavani = dedek.mavani - 1
  174.                     end,
  175.                     [102] = function()
  176.                         dedek.afaze = 2
  177.                         dedek.mavani = dedek.mavani - 1
  178.                     end,
  179.                     default = function()
  180.                         dedek.afaze = 0
  181.                     end,
  182.                 }
  183.             end
  184.             dedek:updateAnim()
  185.         end
  186.     end
  187.  
  188.     -- --------------------
  189.     local update_table = {}
  190.     local subinit
  191.     subinit = prog_init_room()
  192.     if subinit then
  193.         table.insert(update_table, subinit)
  194.     end
  195.     subinit = prog_init_vytah()
  196.     if subinit then
  197.         table.insert(update_table, subinit)
  198.     end
  199.     subinit = prog_init_stroj()
  200.     if subinit then
  201.         table.insert(update_table, subinit)
  202.     end
  203.     subinit = prog_init_dedek()
  204.     if subinit then
  205.         table.insert(update_table, subinit)
  206.     end
  207.     return update_table
  208. end
  209. local update_table = prog_init()
  210.  
  211.  
  212. -- -----------------------------------------------------------------
  213. -- Update
  214. -- -----------------------------------------------------------------
  215. function prog_update()
  216.     for key, subupdate in pairs(update_table) do
  217.         subupdate()
  218.     end
  219. end
  220.  
  221.